const { defineConfig } = require('@vue/cli-service')
const path = require('path')
const fs = require('fs') // 引入文件模块
const dayjs = require('dayjs')
const webpack = require('webpack')
// 封装resolve方法
function resolve(dir) {
  return path.join(__dirname, dir) // join方法是连接多个路径的
}
const IS_PROD = process.env.NODE_ENV !== 'development'
let BUILD_TIME = JSON.stringify(dayjs().format('YYYY-MM-DD HH:mm:ss'))
writeVersion(BUILD_TIME)

function writeVersion(Timestamp) {
  // 开发环境不生产该文件
  if (!IS_PROD) {
    return
  }
  fs.writeFile(
    'public/version.json',
    '{"version":' + Timestamp + '}\n',
    function (err) {
      if (err) {
        return console.log(err)
      }
    }
  )
}
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave: false, // 关闭eslint监测
  configureWebpack: {
    plugins: [
      // webpack.DefinePlugin 是 Webpack 提供的一个插件，用于在编译时创建全局常量。这些常量可以在代码中直接使用，通常用于区分开发环境和生产环境，或者注入一些配置值。
      new webpack.DefinePlugin({
        BUILD_TIME: BUILD_TIME
      })
    ]
  },
  chainWebpack: config => {
    // set svg-sprite-loader
    config.module.rule('svg').exclude.add(resolve('src/assets/svgs')).end()
    config.module
      .rule('icons')
      .test(/\.svg$/)
      .include.add(resolve('src/assets/svgs'))
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
      .end()
  }
})
